package com.zhtools.tree.service;

import com.zhtools.tree.TreeNode;

import java.util.List;

/**
 * Created by zhanghao on 2017/7/4.
 * 树形结构接口凡事具有属性结构特点的结构都具有一下接口功能
 */
public interface TreeService<T extends TreeNode> {
    /**
     * 新增子节点
     *
     * @param t 节点
     */
    void addChild(T t);

    /**
     * 断开父子关系
     *
     * @param t
     */
    void cut(T t);

    /**
     * 换爹
     *
     * @param node   节点
     * @param parent 父节点
     */
    void changeParent(T node, T parent);

    /**
     * 获取下一级子节点列表
     *
     * @param t 节点
     * @return 子节点列表
     */
    List<T> getChilds(TreeNode t);

    /**
     * 构建一颗完整的树
     *
     * @param t 节点
     * @return 节点
     */
    T buildTree(T t);
}
